package com.luck.picture.lib.samsung;

import android.content.Context;
import android.content.pm.FeatureInfo;
import android.content.pm.PackageManager;
import android.content.res.Configuration;
import android.os.Build;
import android.util.Log;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;

public class DeviceUtils {

    /**
     * Android版本>=2.2
     * SDK:8
     *
     * @return 是否Android版本>=2.2
     */
    public static boolean hasFroyo() {
        return Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO;
    }

    /**
     * Android版本>=2.3
     * SDK:9
     *
     * @return 是否Android版本>=2.3
     */
    public static boolean hasGingerbread() {
        return Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD;
    }

    /**
     * Android版本>=3.0
     * SDK:11
     *
     * @return 是否Android版本>=3.0
     */
    public static boolean hasHoneycomb() {
        return Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB;
    }

    /**
     * Android版本>=3.1
     * SDK:12
     *
     * @return 是否Android版本>=3.1
     */
    public static boolean hasHoneycombMR1() {
        return Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR1;
    }

    /**
     * Android版本>=4.0
     * SDK:14
     *
     * @return 是否Android版本>=4.0
     */
    public static boolean hasICS() {
        return Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH;
    }

    /**
     * Android版本>= 4.1
     * SDK:16
     *
     * @return 是否Android版本>= 4.1
     */
    public static boolean hasJellyBean() {
        return Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN;
    }

    /**
     * Android版本>= 4.2
     * SDK:17
     *
     * @return 是否Android版本>= 4.2
     */
    public static boolean hasJellyBeanMr1() {
        return Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1;
    }

    /**
     * Android版本>=4.3
     * SDK:18
     *
     * @return 是否Android版本>=4.3
     */
    public static boolean hasJellyBeanMr2() {
        return Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2;
    }

    /**
     * Android版本>=4.4
     * SDK:19
     *
     * @return 是否Android版本>=4.4
     */
    public static boolean hasKitkat() {
        return Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT;
    }

    /**
     * 获取系统Android版本
     *
     * @return 系统Android版本
     */
    public static int getSDKVersionInt() {
        return Build.VERSION.SDK_INT;
    }


    /**
     * 获得设备的固件版本号
     *
     * @return 设备的固件版本号
     */
    public static String getReleaseVersion() {
        return (Build.VERSION.RELEASE == null) ? "" : Build.VERSION.RELEASE;
    }


    /**
     * 检测是否是中兴机器
     *
     * @return 是否是中兴机器
     */
    public static boolean isZte() {
        return getDeviceModel().toLowerCase().contains("zte");
    }

    /**
     * 判断是否是三星的手机
     *
     * @return 是否是三星的手机
     */
    public static boolean isSamsung() {
        return getManufacturer().toLowerCase().contains("samsung");
    }

    /**
     * 检测是否HTC手机
     *
     * @return 是否HTC手机
     */
    public static boolean isHTC() {
        return getManufacturer().toLowerCase().contains("htc");
    }

    /**
     * 检测当前设备是否是特定的设备
     *
     * @param devices 设备列表
     * @return 是否是特定的设备
     */
    public static boolean isDevice(String... devices) {
        String model = DeviceUtils.getDeviceModel();
        if (devices != null && model != null) {
            for (String device : devices) {
                if (model.contains(device)) {
                    return true;
                }
            }
        }
        return false;
    }

    /**
     * 获得设备型号
     *
     * @return 设备型号
     */
    public static String getDeviceModel() {
        Log.i("getDeviceModel", (Build.MODEL) == null ? "" : (Build.MODEL).trim());
        return (Build.MODEL) == null ? "" : (Build.MODEL).trim();
    }

    /**
     * 获取厂商信息
     *
     * @return 获取厂商信息
     */
    public static String getManufacturer() {
        return (Build.MANUFACTURER) == null ? "" : (Build.MANUFACTURER).trim();
    }


    /**
     * 判断是否是平板电脑
     *
     * @return 是否是平板电脑
     */
    public static boolean isTablet(Context context) {
        return (context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_LARGE;
    }


    /**
     * 获取CPU的信息
     *
     * @return CPU的信息
     */
    public static String getCpuInfo() {
        String cpuInfo = "";
        try {
            if (new File("/proc/cpuinfo").exists()) {
                FileReader fr = new FileReader("/proc/cpuinfo");
                BufferedReader localBufferedReader = new BufferedReader(fr,
                        8192);
                cpuInfo = localBufferedReader.readLine();
                localBufferedReader.close();
                if (cpuInfo != null) {
                    cpuInfo = cpuInfo.split(":")[1].trim().split(" ")[0];
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return cpuInfo;
    }

    /**
     * 判断是否支持闪光灯
     *
     * @return 是否支持闪光灯
     */
    public static boolean isSupportCameraLedFlash(Context context) {
        PackageManager pm = context.getPackageManager();
        if (pm != null) {
            FeatureInfo[] features = pm.getSystemAvailableFeatures();
            if (features != null) {
                for (FeatureInfo f : features) {
                    if (f != null
                            && PackageManager.FEATURE_CAMERA_FLASH
                            .equals(f.name)) // 判断设备是否支持闪光灯
                    {
                        return true;
                    }
                }
            }
        }
        return false;
    }

    /**
     * 检测设备是否支持相机
     *
     * @param context 上下文
     * @return 是否支持相机
     */
    public static boolean isSupportCameraHardware(Context context) {
        if (context != null
                && context.getPackageManager().hasSystemFeature(
                PackageManager.FEATURE_CAMERA)) {
            return true;
        } else {
            return false;
        }
    }
}